perm filename NTS.FAI[NEW,LCS]4 blob
sn#327781 filedate 1978-01-09 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE NTS
C00030 ENDMK
C⊗;
TITLE NTS
ENTRY NTS,STAFF
EXTERNAL .COMM.,ALF,POSI,AMOD,CENTX,RDRAW,PLTR,STF,EXTRA
EXTERNAL LINX,DRWNT,DAT,NOIR,TAIL,LINES,RHORZ
INTERNAL WIDTH ; NOTE WIDTH IN BASIC UNITS
;SUBROUTINE NOTWRT
;IMPLICIT INTEGER(A-Q,S-Z)
;COMMON/DL/IXRX,M,AA /FONT/JFONT
;COMMON/SCM/V(78),ISCR,LCNT,RSTF,LIST(200),REND
;COMMON/DAT/RACNT(69),RDOT(17),XAC(7),RNOTE(22),RACCI(22),NACCI(3)
;REAL DIS,CENTR,POS,STFF
;COMMON /STF/RSTFAC(0/7),RSTJ2
;COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
;COMMON/PLTR/PLT,RHT,DIS /POSI/STFF(0/7),JJ2,POS
; ITEMS IN FOLLOWING COMMON BLOCK ARE USED IN 'TAILS' AND 'FERM'
;COMMON/ALF/INP(46),RST7,RST3,RSTX,RMINI,RINV,RA,RX,RJX,RJY,
;1 RB,RJW,RZ,JX,RG,KL,RJAC,K,L,RQ,RH,RZTM,RXX,JJJ,
;1 PUNCT,JY,RJ
;EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R4,RJQ(2))
;1,(R6,RJQ(4)),(J7,JQ(5)),(J8,JQ(6)),(J9,JQ(7)),(J10,JQ(8)),
; 1(J11,JQ(9)),(J6,JQ(4)),(R5,RJQ(3)),(R11,RJQ(9)),(STEM,JQ(20))
; 1,(R8,RJQ(6)),(R7,RJQ(5)),(RX,JRX),(RJZ,RJQ(20)),(R3,RJQ(1))
; 1,(RX4,JQ(19)),(STEM,JQ(20))
DEFINE J10 <.COMM.+=31>
WIDTH: 14.54
NTS: 0 ; NOTES****
MOVE .COMM.+=26 ;STEM=J5/10
IDIVI =10
MOVEM .COMM.+=43 ; STEM
MOVM 7,.COMM.+=27 ; (J6) 11 JY=0
CAIN 7,=30 ;IF(JY.EQ.30)JY=0 30 IS USED IN NOTBMS & RHYTH.
SETZ 7,
SKIPN .COMM.+=12 ;IF R11.NE.0 PUT A -1 (INTEGER) INTO R6
JRST .+3 ;SORT IT OUT IN NTSB
SETOM .COMM.+7 ;*******EVENTUALLY DO AWAY WITH R6-R11 COMPATIBILITY
JRST N1
SKIPN .COMM.+7 ;IF(R6.EQ.0)GO TO 1015
JRST N1 ;JY=IABS(J6)
JSA 16,AMOD ;R6=ABS(AMOD(R6,1.0))*10.
JUMP .COMM.+7
JUMP [1.0]
FMPR [10.0]
MOVMM .COMM.+7 ; R6 L IS AC 14 ******
N1: MOVM 14,.COMM.+=25 ;R6 WILL HAVE ACCENT CODE # (.7=DOT, ETC.)
;; ; L 1015 L=IABS(J4)
MOVEM 7,ALF+=70 ;PUT AWAY JY IN RIGHT PLACE FOR NOTSUB.
MOVE .COMM.+4 ;RJAC=R3
MOVEM ALF+=61
MOVE 13,[2.0] ; TO SAVE POS. OF NOTE FOR ACCENT
FMPR 13,STF+10 ; 13 IS RZTM=2.*RSTJ2
N1010: SKIPLE J10 ;IF(J10.GT.0)GO TO N3016
JRST N3016
CAIGE 14,=80 ;1010 IF(L.LT.80)GO TO 1013
JRST N1013 ;MINIS= 80→179 OR -100→-120
;; MOVE 2,.COMM.+5 ;NEXT CHECKS FOR >80 NUMBS.
;; CAMGE 2,[-20.0] ;IF(R4.LT.-20)R4=R4+100
;; FADR 2,[100.0] ; CATCHES THINGS LIKE R4=-95
;; CAMGE 2,[80.0] ;*******ALL THIS IS NOW IN CENTX(LOOP.FAI)***
;; JRST .+3
;; FSBR 2,[100.0]
;; MOVEM 2,.COMM.+5 ;PUT THE RIGHT THING INTO R4
CAIGE 14,=180 ;IF(L.LT.180)GO TO 1012
JRST N1012 ;DIAMOND NTS=180→279
SETZ 13, ;RZTM=0
CAIL 14,=280 ;IF(L.GE.280)GO TO 1014
JRST N1014 ;X NTS=280→379
MOVEI 12,10 ; 12 IS KL=8
MOVE 11,[12.0] ; 11 IS RG=12.0
JRST N1013 ; FOR DIAMOND NOTES.
N1014: CAIL 14,=380 ;GO TO 1013 STEM ONLY NTS=380→479
JRST N1016 ;1014 IF(L.GE.380)GO TO 1016
MOVE 10,[7.0] ; 10 IS RJX=RMINI*7
FMPR 10,ALF+=49 ; *RMINI (+49)
MOVEI 12,=13 ; FOR "X" NOTES.
MOVE 11,[16.0] ;KL=13
MOVE 2,.COMM.+=43 ; STEM RG=16.
CAIN 2,2 ;RB=CENTR+RJX
MOVNS 10 ;IF(STEM.EQ.2)RB=CENTR-RJX
FADR 10,.COMM.+2 ; 10 IS RB
JRST N1013 ;GO TO 1013
;;N1016: CAIGE 14,=1000 ;1016 IF(L.LT.1000.OR.L.GE.10000)GO TO 1011
N1016: CAIGE 14,[=10000]
JRST N1019 ;IF(L.GE.10000)GO TO 1013
JRST N1013
;; CAML 14,[=10000]
;; JRST N1013
;;N3016: MOVE .COMM.+=43 ;IF(STEM.EQ.2)GO TO N2016
;; CAIN 2
;; JRST N2016 ;STEM DIRECTION IS REVERSED ON OTHER STAFF!!!!!
;; JUMPE N2016+1 ;IF(STEM.EQ.0)GO TO N2016+1
;; AOS .COMM.+=43 ;STEM=STEM+1
;; SKIPA
;;N2016: SOS .COMM.+=43 ;STEM=STEM-1
;;;N3016: SETO 12, ;KL=-1
N3016: MOVE 2,.COMM.+3 ;POS=STFF(J2+1) VERT. POS OF STAFF ABOVE
MOVE J10 ;IF(J10.EQ.1)KL=-KL
CAIE 2
SUBI 2,2 ; CHANGE TO J2-1 IF STAFF BELOW
;%%%%% MOVE 2,POSI+4(2) ; GET POS.
MOVE 2,POSI+1(2) ; GET POS.
MOVEM 2,POSI+=9 ; POS
;;; MOVNS 12
;PUTS NOTE ON STF ABOVE(P10=2) OR BELOW(=1)-NEXT FIND POS ON OTHER STF
;;; MOVE 2,.COMM.+3 ;RB=(STFF(J2-KL)-STFF(J2))/RST7
;;; ADDI 2,3 ; STF#+3(+1)
;;; MOVN 3,POSI(2)
;;; SUB 2,12
;;; FADR 3,POSI(2)
;;; FDVR 3,ALF+=46 ; RB
;;; FADRM 3,.COMM.+5 ;R4=R4+RB
JSA 16,CENTX ;CALL CENTX
;; SETOM .COMM.+=30 ;J9=-1
; SUPRESSES LEDGER LINES -- CAN'T USE LEDGER LINES ON OTHER STAFF!
JRST N1010+2 ;GO TO 1010 GO BACK FOR P4 FEATURES
N1019: CAIL 14,=480 ;1011 IF(L.LT.10000)GO TO 1019
JRST N1017 ;GO TO 1013
MOVE 10,.COMM.+=13 ; R12 1019 IF(L.GE.480)GO TO 1017
FMPR 10,ALF+=46
FADR 10,.COMM.+2 ;RB=CENTR+R12*RST7
JRST N1013 ;+400 = NO NOTE HEAD. P12 CAN ADJUST SOURCE OF STEM.
N1017: JSA 16,EXTRA ;GO TO 1013
SETOM .COMM.+=43 ;1017 RG=R4
JRA 16,(16) ;CALL EXTRA
; 'EXTRA' IS FOR USER-ADDED NOTE AND REST SHAPES. P4+ 480→ (OR 600 TOO?)
; 480 IS USED SO NOTES CAN BE AT 500-19
;RETURN
N1012: MOVE 2,STF+10 ;1012 RMINI=.6*RSTJ2
FMPR 2,[0.6]
MOVEM 2,ALF+=49 ; RMINI
; FOR RMINI NOTES
;;** DONE IN CENTX *** 1017 ;R4=AMOD(R4,100.)
; FOR MINI TAILS AND ACCIS. ETC.
N1013: MOVE 2,.COMM.+5 ;1013 J4=R4
MOVEM 2,.COMM.+=42 ; JQ(19) IS EQUIV. TO RX4
MOVEM 2,.COMM.+=23 ; RJZ
KIFIX 2,2
MOVEM 2,.COMM.+=25 ; J4 RJZ=R4
; RJZ FOR FLAT, #, NAT. RX4 FOR TR., HARM, ETC.
MOVEM 10,ALF+=55 ; RB
MOVEM 11,ALF+=69 ; RG IF(JY.LT.10)GO TO 2221
MOVEM 12,ALF+=60 ; KL
MOVEM 13,ALF+=66 ; RZTM
MOVEM 14,ALF+=63 ; PUT AWAY L FOR NOTWRT
CAIGE 7,=10
JRST N2221
MOVE 4,WIDTH ;**** NO LONGER USED→IF(JY.GE.30)GO TO 2221
; P6 FOR HOMING TO RIGHT(10) OR LEFT(20) OF STEM(10=UP, 20=DOWN)
; P6<0 = WHITE NOTE
SKIPGE .COMM.+=27 ; J6 RQ=RSTM
MOVE 4,[16.2] ;IF(J6)RQ=16.2
; GETS WIDTH OF NOTE DISPLACEMENT
CAIN 7,=20 ;IF(JY.EQ.20)RQ=-RQ
MOVNS 4
FMPR 4,ALF+=49 ;R3=R3+RQ*RMINI
FADRM 4,.COMM.+4 ; R3
N2221: CAIG 2,1 ;2221 IF(J4.LE.1)GO TO 322
JRST N322
CAIL 2,=13 ;IF(J4.LT.13)GO TO 1121
N322: SKIPGE .COMM.+=30 ;322 IF(J9)GO TO 1121
JRST N1121 ; ARE THERE LEDGER LINES? P9=-1 SUPPRESSES THEM.
MOVE 3,2 ;J12=(J4+1)/2-6
AOJ 3,
IDIVI 3,2 ; (AC4 NOT USED YET)
SUBI 3,6 ; 3 IS J12
MOVEM 3,.COMM.+=33
JUMPGE 3,.+5 ;IF(J12)J12=-((3-J4)/2)
MOVE 3,2
SUBI 3,3
IDIVI 3,2
MOVEM 3,.COMM.+=33 ; J12 ; FOR LEDGER LINES
MOVN 4,ALF+=49 ;RJW=R3-7.*RMINI
FMPR 4,[7.0]
FADR 4,.COMM.+4
MOVEM 4,ALF+=56 ; RJW
MOVE 5,ALF+=49 ;RZ=R3+20.*RMINI
FMPR 5,[20.0]
FADR 5,.COMM.+4 ; RZ
MOVEM 5,ALF+=57 ; RZ
JUMPL 3,N71 ;IF(J12)GO TO 71
MOVEI 6,=13 ;JX=J12
MOVEM 3,ALF+=58 ; JX JRX=13
JRST N711 ;GO TO 711
N71: MOVEI 6,2 ;71 JX=-J12
IMUL 6,3 ;JRX=J12*2+3
ADDI 6,3
MOVNM 3,ALF+=58 ; JX
N711: MOVN 7,[18.0] ;711 RX=POS-18*RSTJ2+RST7*JRX
FMPR 7,STF+10
FLTR 6,6 ; FLOAT IT
FMPR 6,ALF+=46
FADR 6,7
FADR 6,POSI+=9 ;IF(J6)RZ=RZ+2*RMINI
MOVEM 6,ALF+=52 ; RX IS 6
SKIPL .COMM.+=27
JRST N126
MOVE 2,ALF+=49 ; RMINI
FMPR 2,[2.0]
FADRM 2,ALF+=57 ; RZ
N126: JSA 16,LINX ;126 CALL LINX(RJW,RX,RZ,RX)
JUMP ALF+=56
JUMP ALF+=52
JUMP ALF+=57
JUMP ALF+=52
MOVN 2,PLTR ;IF(PLT.NE.-2)GO TO 1126
CAIE 2,2
JRST N1126
MOVN 2,[1.0] ;RJY=RX-1./RHT
FDVR 2,PLTR+1
FADR 2,ALF+=52 ; RX
MOVEM 2,ALF+=54 ; RJY
JSA 16,LINX ;CALL LINX(RJW,RJY,RZ,RJY)
JUMP ALF+=56
JUMP ALF+=54
JUMP ALF+=57
JUMP ALF+=54
N1126: MOVE 3,ALF+=58 ; JX 1126 IF(JX.EQ.1)GO TO 1122
CAIN 3,1
JRST N1122
MOVE 2,STF+10 ;RX=RX+RSTJ2*14.
FMPR 2,[14.0]
FADRM 2,ALF+=52 ; RX
SOS ALF+=58 ;JX=JX-1
JRST N126 ;GO TO 126
N1122: SETOM .COMM.+=30 ;1122 J9=-1 ; IF J6≠0 NOTE IS FILLED IN
; 1121 IF(L.GE.400)GO TO 123 ; JUMP IF NO NOTE HEAD
N1121: CAIL 14,=400 ;IF(J6)GO TO 1322
JRST N123
SKIPGE .COMM.+=27 ; J6
JRST N1322
CAIGE 14,=200 ;IF(L.LT.200)GO TO 125
JRST N125
N1322: CAIL 14,=200 ;1322 IF(L.GE.200)GO TO 1253
JRST N1253 ; FOR DIAMOND AND X NOTES.
MOVEI 12,1 ;KL=1
MOVE 11,[7.0] ;RG=7. ; FOR WHITE NOTES ON DPY.
MOVE .COMM.+=28 ;JSA 16,MOD ;WHOLE=MOD(J7,10)
IDIVI =10 ;JUMP .COMM.+=28
MOVEM 1,ALF+=71 ;JUMP [=10] ; WHOLE
JUMPE 1,N2122 ;IF(WHOLE.EQ.0)GO TO 2122
SETZM .COMM.+=43 ;STEM=0 ;FOR VARIOUS AUTOMATIC FEATURES IN 'SCORE' SECTION.
SETZM .COMM.+=28 ;J7=0
JSA 16,AMOD ;R5=AMOD(R5,10.)
JUMP .COMM.+6
JUMP [10.0]
MOVEM .COMM.+6
KIFIX 0,0
MOVEM .COMM.+=26 ;J5=R5
SKIPGE PLTR ;IF(PLT)GO TO 2121
JRST N2121
MOVE 2,ALF+=71 ;IF(WHOLE.NE.2)GO TO 1253
CAIE 2,2
JRST N1253 ;RQ=POS-18.*RSTJ2+RST7*(R4-1.)
MOVN [18.0]
FMPR STF+10
MOVE 1,.COMM.+5 ; R4
FSBR 1,[1.0]
FMPR 1,ALF+=46 ; RST7
FADR 1,0
FADR 1,POSI+=9 ; POS
MOVEM 1,ALF+=64 ; RQ
FADR 1,ALF+=46 ;CALL LINX(R3,RQ,R3,RQ+RST7+RST7)
FADR 1,ALF+=46
MOVEM 1,ALF+=65 ; (RH)
JSA 16,LINX
JUMP .COMM.+4
JUMP ALF+=64
JUMP .COMM.+4 ;PUT IN LINE TO SHOW DBL WHOLE ON SCREEN (P7=2)
JUMP ALF+=65
N2122: SKIPL PLTR ;2122 IF(PLT.GE.0)GO TO 1253
JRST N1253
N2121: CAIL 14,=200 ;2121 IF(L.GE.200)GO TO 1253
JRST N1253
MOVE ALF+=71 ;J5=15+WHOLE
ADDI =15
MOVEM .COMM.+=26 ;IF WHOLE=1, THEN WHOLE NOTE SHAPE INSTEAD OF HALF. (P7=1)
MOVE STF+10 ;RG=RSTJ2
MOVEM ALF+=59 ; RG FOR NOW ;FIX THIS SOME DAY↓↓ SEE 1342+1!
; THESE NOTES ARE IN CLEF1. 1/2=13, WHOLE=14
MOVE .COMM.+=25 ;JX4=J4
MOVEM ALF+=68 ; JX4
MOVE .COMM.+10 ;RQ=R7
MOVEM ALF+=64 ; RQ
JSA 16,DRWNT ; CALL DRWNT ; SAVE IT FOR DOTS
MOVE ALF+=59 ;R7=RQ
MOVEM STF+10
MOVE ALF+=68 ;J4=JX4
MOVEM .COMM.+=25 ; GET 'EM BACK
MOVE ALF+=64 ;RSTJ2=RG
MOVEM .COMM.+10 ; (R7) ;DRAWS GOOD NOTES ON PLOTTER, NOT ON DPY
JRST N123 ;GO TO 123
N1251: JSA 16,NOIR ;1251 CALL NOIR(RMINI)
JUMP ALF+=49 ; FOR QUARTER NOTES ON PLOTTER.
JRST N123 ;GO TO 123
N125: MOVEM 10,ALF+=55 ; SAVE RB
SKIPGE PLTR ;125 IF(PLT)GO TO 1251
JRST N1251
MOVE 11,[22.0] ;RG=22
MOVEI 12,=17 ;KL=17
N1253: MOVEM 12,ALF+=60 ; ABOVE IS NEW NOTES ROUTINE
MOVEI 0,1
MOVEM STAFF ;FOR TRIPLE-THICK X NOTES, HARMONICS.
MOVE .COMM.+4
MOVEM ALF+=69 ;RH=R3
MOVEM 11,ALF+=59
NRDR: JSA 16,RDRAW ;1253 CALL RDRAW(KL,RG,RNOTE,RMINI,RH,CENTR,RMINI)
JUMP ALF+=60
JUMP ALF+=59
JUMP DAT+=93
JUMP ALF+=49
JUMP ALF+=69
JUMP .COMM.+2
JUMP ALF+=49
SKIPL STAFF ;IF(STAFF.LT.0)ALL DONE
SKIPL PLTR ;IF(PLT.GE.0)GO TO 123
JRST N123
MOVE 12,ALF+=60 ;IF(KL.EQ.8)GO TO 2253
CAIN 12,=8
JRST N2253
CAIE 12,=13 ;IF(KL.NE.13)GO TO 123
JRST N123 ; MAKE DBL THICK X AND DIAMOND NOTES
;;N2253: MOVE .COMM.+4 ;2253 RH=R3-1.0
; MAKE TRIPLE THICK X AND DIAMOND NOTES
N2253: MOVE ALF+=69 ;2253 RH=R3-1.0
FSBR [1.0]
MOVEM ALF+=69
; GO BACK FOR THIS ;CALL RDRAW(KL,RG,RNOTE,RMINI,RH,CENTR,RMINI)
SOS STAFF ;STAFF=STAFF-1
JRST NRDR
N123: MOVN 2,.COMM.+=26 ;R5=R5-J5
FLTR 2,2
FADRM 2,.COMM.+6
SKIPN .COMM.+=43 ;IF(STEM.EQ.0)RETURN
JRA 16,(16)
MOVE 10,ALF+=55 ; PUT RB BACK INTO 10
MOVE 14,ALF+=63 ; GET BACK L
CAIL 14,=300
JRST N128
MOVE 10,ALF+=66 ; RZTM
FADR 10,.COMM.+2 ; RB R5=STEPS TO LEFT FOR ACCID. (.1=1 STEP)
N128: MOVE 5,.COMM.+=28 ;JSA 16,MOD
IDIVI 5,=10 ;JUMP .COMM.+=28
MOVEM 6,.COMM.+=28 ;JUMP [=10] ;IF(STEM.EQ.0)GO TO 1242
;IF(L.LT.300)RB=CENTR+RZTM
SOJ 6, ; ≥300 IS FOR 'X' NOTES.
IMULI 6,=14 ;128 J7=MOD(J7,10)
FLTR 6,6 ;RG=(J7-1)*14
SKIPGE 6 ;IF(RG)RG=0
SETZ 6, ; 6 IS RG
MOVE 2,.COMM.+=9 ;999 IS STANDARD (0) STEM LENGTH.
CAME 2,[999.0] ;IF(R8.NE.999)GO TO 1751
JRST N1751
SETZ 2, ;R8=0
SETZ 15, ; 15 = RH=0
JRST N2751 ;GO TO 2751
N1751: CAMG 2,[999.0] ;1751 IF(R8.LT.999)GO TO 751
JRST N751
FSBR 2,[1000.0] ;R8=R8-1000.
SETOM .COMM.+=11 ; R10=-1 TO MAKE GRACE NOTE SLASH
N751: MOVE 15,2 ; 1000+ PUTS SLASH ON NOTE STEM
FMPR 15,ALF+=46 ;15 IS RH 751 RH=R8*RST7
N2751: MOVEM 2,.COMM.+=9 ; R8
MOVE .COMM.+=26 ;JSA 16,MOD
IDIVI =10 ;JUMP .COMM.+=26 ;J5=MOD(J5,10) ACCI NOW IN J5
MOVEM 1,.COMM.+=26 ;JUMP [=10]
MOVE .COMM.+=43 ; STEM EXTENSIONS ARE BY NOTE #S
CAIE 2 ;2751 IF(STEM.NE.2)GO TO 1280
JRST N1280
MOVE 5,.COMM.+4 ;RJX=R3
FADR 6,[48.0] ; FOR STEM DOWN (=2)
MOVNS 6 ;RG=-RG-48.
MOVNS 15 ;RH=-RH
;*** SEE AT N2751 MOVEI 14,=20 ;L=20
MOVN 4,ALF+=66 ; RZTM RB=RB-RZTM*2
FMPR 4,[2.0] ; FOR TILT OF ORDINARY NOTES (NOT X OR DIAMOND)
FADR 10,4 ; RB IS 10 (SEE 'WAY BACK)
JRST N129 ;GO TO 129
N1280: MOVE 5,WIDTH ; NEXT IS FOR STEM UP.
SKIPGE .COMM.+=27 ;1280 RJX=RSTM
MOVE 5,[16.2] ;IF(J6.LT.0)GET SPACE FOR HALF NOTE
N2322: FMPR 5,ALF+=49 ;2322 RJX=RJX*RMINI+R3
FADR 5,.COMM.+4
FADR 6,[48.0] ; 6 IS RG=RG+48.
;*** SEE AT N2751 MOVEI 14,=10 ;L=10
N129: FMPR 6,ALF+=49 ;129 RZ=CENTR+RH+RG*RMINI
FADR 6,15
FADR 6,.COMM.+2
MOVEM 6,ALF+=57
MOVE 4,ALF+=49 ;IF(RMINI.NE.RSTJ2)RJW=RJW*.6
CAMN 4,STF+=8
JRST .+4
MOVE ALF+=56
FMPR [0.6]
MOVEM ALF+=56
MOVEM 5,ALF+=53 ; RJX
MOVEM 10,ALF+=55 ; RB
JSA 16,LINX ;CALL LINX(RJX,RB,RJX,RZ)
JUMP ALF+=53
JUMP ALF+=55
JUMP ALF+=53
JUMP ALF+=57
;****N227: MOVN 14 ; RB HERE IS CENTR (FOR 'X' NOTES OR NOT)
;** SEE AT N2751*** ADDM .COMM.+=26 ;227 J5=J5-L
N227: SKIPG .COMM.+=28 ; J5 HAS ACCID. # NOW
JRA 16,(16) ;IF(J7.LE.0)GO TO 1242
MOVE [2.0] ; JUMP IF NO TAILS
FMPR ALF+=49 ;RJW=2.*RMINI/RSTJ2
FDVR STF+10
MOVEM ALF+=56
MOVE 3,[1.0] ;RA=1.
MOVE .COMM.+=43 ; FOR VERT. SPACING OF MULTIPLE TAILS
CAIE 2 ;IF(STEM.NE.2)GO TO 1127
JRST N1127
MOVN .COMM.+=9 ;R4=R4-3.7-R8
FSBR [3.7] ; R4 IS USED IN SUBR. TAIL - R8 IS STEM EXTENSION.
FADRM .COMM.+5
MOVNS ALF+=56 ;RJW=-RJW
JRST N127 ;GO TO 127
N1127: MOVE .COMM.+=9 ;1127 R4=R4-2+R8
FSBR [2.0]
FADRM .COMM.+5
; 2 ABOVE AND 3.7 BEFORE ARE BECAUSE ORIG. POS. OF TAIL DRWING IS OFF.
MOVNS 3 ;RA=-RA
SETZM .COMM.+=9 ;R8=0 FOR SHIFT AT 246
N127: MOVEM 3,ALF+=51 ; RA
JSA 16,TAIL ;127 CALL TAIL
SOS .COMM.+=28 ;1028 J7=J7-1
SKIPN .COMM.+=28 ;IF(J7.EQ.0)GO TO 327
JRST N327
MOVE ALF+=56 ;R4=R4+RJW
FADRM .COMM.+=5
JRST N127+1 ; GO TO 127 MOVES CENTR UP OR DOWN FOR NEXT TAIL
N327: MOVE .COMM.+=5 ;327 IF(R4.GE.RX4)RX4=R4+1
CAMGE .COMM.+=42
JRST .+3
FADR [1.0]
MOVEM .COMM.+=42 ; FOR TRILLS, ETC.
SKIPL .COMM.+=11 ;IF(J10.GE.0)GO TO 1242
JRA 16,(16)
MOVN [19.0] ;RJY=RZ-19*RSTJ2
FMPR STF+10
FADR ALF+=57 ; 0 IS RJY FOR NOW
MOVN 2,[4.0] ;RZ=RZ-RSTJ2*4.
FMPR 2,STF+10
FADRM 2,ALF+=57
SKIPGE ALF+=51 ;IF(RA.LT.0)GO TO 1327
JRST N1327 ; NEXT IS FOR STEM DOWN SLASH
MOVE [23.0] ;RJY=RZ+23*RSTJ2
FMPR STF+10
FADR ALF+=57 ; 0 IS RJY
MOVE 2,ALF+=46 ;RZ=RZ+RST7
FADRM 2,ALF+=57
N1327: MOVN 2,ALF+=46 ;1327 RJX=RJX-RST7
FADRM 2,ALF+=53
MOVEM ALF+=54 ; RJY
MOVE [17.0]
FMPR STF+10
FADR ALF+=53
MOVEM ALF+=71
JSA 16,LINX ;CALL LINX(RJX,RJY,RJX+17.*RSTJ2,RZ)
JUMP ALF+=53
JUMP ALF+=54
JUMP ALF+=71
JUMP ALF+=57 ;FOR SLASH ON GRACE NOTE TAIL
JRA 16,(16)
; REAL DIS,DISX,HGT,POS,CENTR,STFF,HGT1
; COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)/BM/RA,RC,RJY
; COMMON/POSI/STFF(0/7),JJ2,POS/PLTR/PLT,RHT,DIS
; EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R5,RJQ(3))
; 1,(R6,RJQ(4)),(J7,JQ(5)),(J8,JQ(6)),(J9,JQ(7)),(J10,JQ(8))
; 1,(J11,JQ(9)),(J6,JQ(4)),(R9,RJQ(7)),(R8,RJQ(6)),(R3,RJQ(1))
; 1 ,(R7,RJQ(5)),(R4,RJQ(2)),(R9,RJQ(7)),(R10,RJQ(8)),(RX3,RJQ(20))
STAFF: 0 ;100 RA=0
; FOR STAFF LINES: 8, POS 1, HGT(0 TO 7), UP-DOWN(NT #S),
; P5=SIZE, P6=2ND POS., P7=(1=INVIS.), P8=SPACER, P9=INST. NAME
; P6=SIZE FACTOR, IF P7≠0 STAFF IS INVIS.
; PLT =-2 MAKES HEAVY STAFF.(FOR XGP)
; IF(R5.EQ.0)R5=RSTFAC(J2)
MOVE 3,.COMM.+3 ; J2
MOVE 2,.COMM.+6
JUMPN 2,.+4
MOVE 2,STF(3) ; TEMP. R5 IS 2
SKIPN 2 ;CALL NOZERO(R5)
MOVE 2,[1.0]
MOVEM 2,STF(3) ;RSTFAC(J2)=R5
MOVE 4,.COMM.+5 ;RX=(J2+3)*123-369.+AMOD(R4,100.)*7.*R5
FMPR 4,[7.0] ; %%%% -469
FMPR 4,2
MOVE 7,3
;;; ADDI 7,3 ; J2+3 NOW STAFF NUMS RUN FROM 0 TO 7
IMULI 7,=123
SUBI 7,=469 ;%%%%%%%%%% WAS -396
FLTR 7,7
FADR 7,4 ; 7 IS RX
MOVEM 7,POSI(3) ;STFF(J2)=RX
MOVE 13,[3.0] ; RTF RX=RX+RTF*R5
FMPR 13,2
FADR 13,7 ; 13 IS RX
; FOR RTF SEE DATA ;13 IS RA THIS COMES DOWN AT STF69 RA=RX
; FOR 2 PASS PLOTTING
JSA 16,RHORZ ;RJ=RHORZ(R6)
JUMP .COMM.+7
SKIPN .COMM.+7
MOVE [596.0] ;IF(R6.EQ.0)RJ=596
MOVEM ALF+4 ; RJ
FMPR 2,[14.0] ;R5=R5*14.
MOVEM 2,.COMM.+6
SKIPE .COMM.+11 ;IF(R8.EQ.0)GO TO 68
SKIPGE PLTR
JRST STF68 ;IF(PLT)GO TO 68
MOVE 14,.COMM.+11 ;RZ=RX+R8*167.
FMPR 14,[167.0]
FADR 14,13 ; 13 IS RX 14 IS RZ
; 167 IS A MAGIC NUMBER!! PUTS LINE ON DPY.
JSA 16,LINX ;CALL LINX(R3,RZ,RJ,RZ)
JUMP .COMM.+4
JUMP 14
JUMP ALF+4
JUMP 14 ; SHOWS WHERE NEXT STAFF 0 WILL BE.
STF68: SKIPN .COMM.+=28 ;68 IF(J7.EQ.0)GO TO 101
JRST STF101
SKIPE PLTR ;IF(PLT.EQ.0)CALL LINES(-596.,RX,3)
JRA 16,(16)
JSA 16,LINES
[-596.0]
13
[3] ; TO ACTIVATE DPY BUFFER
JRA 16,(16) ;RETURN
STF101: MOVE 14,.COMM.+=25 ;101 L=IABS(J4/100)
IDIVI 14,=100 ; AC 15 NOT USED
MOVM 14
SKIPN 14, ;IF(L.EQ.0)L=5
MOVEI 14,5 ; L IS 14
; P4=0=STANDARD 5-LINE STAFF. 600=6 LINES, ETC.
MOVE 11,ALF+4
MOVEM 13,NTS
STF69: SETZ 12, ; K 69 DO 6 K=1,L
STF1: JSA 16,LINX
JUMP 11 ;RZ=RJ
JUMP 13 ;RW=R3
JUMP .COMM.+4 ;IF(K.EQ.2)GO TO 66
JUMP 13 ;IF(K.NE.4)GO TO 67
EXCH 11,.COMM.+4 ;66 CALL EXCH(RW,RZ)
FADR 13,.COMM.+6 ;67 CALL LINX(RZ,RX,RW,RX)
AOJ 12, ;6 RX=RX+R5
CAMGE 12,14
JRST STF1
MOVNI 2 ;IF(RA.EQ.1000)RETURN
CAMN PLTR ;IF(PLT.NE.-2)RETURN
SKIPN NTS ;RX=RA-1./RHT
JRA 16,(16)
MOVN 13,[1.0] ;RA=1000
FDVR 13,PLTR+1
FADR 13,NTS
SETZM NTS ;GO TO 69
JRST STF69 ;END
END